//
//  DemoRandom.swift
//  swiftDemo
//
//  Created by JIENING ZHANG on 2022/11/28.
//  Copyright © 2022 lovivid. All rights reserved.
//

import UIKit

class DemoRandom: NSObject {
    class func demoLogic() {
        // https://www.cnblogs.com/motoyang/p/4946945.html
        // arc4random使用了arc4密码加密的key stream生成器(请脑补)，产生一个[0, 2^32)区间的随机数(注意是左闭右开区间)。这个函数的返回类型是UInt32
        for loop in 0..<10 {
            print("\(loop), arc4random --UInt32--> \(arc4random())"); // 不用设置 seed，每次都返回不同的随机值序列
        }
        
        //arc4random_uniform，它接受一个UInt32类型的参数，指定随机数区间的上边界upper_bound，该函数生成的随机数范围是[0, upper_bound)
        for loop in 0..<10 {
            print("\(loop), arc4random_uniform(101) --UInt32--> \(arc4random_uniform(101))"); // 不用设置 seed，每次都返回不同的随机值序列
        }
        
        // drand48函数，这个函数产生一个[0.0, 1.0]区间中的浮点数。这个函数的返回值是Double类型
        // 这个函数是需要先调用srand48生成一个种子的初始值
        for loop in 0..<10 {
            print("\(loop), drand48，before srand48 --Double--> \(drand48())"); // 没有设置 seed，每次都返回 相同的 随机值序列
        }
        
        srand48(Int(time(nil)))
        for loop in 0..<10 {
            print("\(loop), drand48，after srand48 --Double--> \(drand48())"); // 设置 seed后，每次都返回 不同的 随机值序列
        }
        
    }
    
}
